As will be readily appreciated by those familiar with the data processing art, debuggers are widely used to identify mistakes, or malfunctions in a computer program. More specifically, the debugging process involves the detection, location, isolation and elimination of mistakes, or malfunctions, from an operating program. In essence, a debugger is a special program designed to assist a user in the process of debugging an operating program. Because computer operating programs come in a wide variety of forms designed to be used in a wide variety of applications, debuggers come in a wide variety of forms. In some cases, the debugger forms part of the main computer program. In other instances, the debugger is an entirely separate program. In any case, the debugger is designed to respond to user commands normally entered via a keyboard. For example, the user could enter an EXAMINE command requesting that data present at a certain point in the process being debugged be displayed. Based on the nature of the command, e.g., EXAMINE, and associated information also entered by the user, such as the address of the register whose data is to be displayed, the debugger would locate the data and cause it to be displayed. Another common command used during debugging is entitled STEP, which requests that the program being debugged be stepped and that the steps be displayed. A further common debugging command is CONTINUE, directing the program to continue from a stop point or from a specified new point. As will be readily appreciated by those skilled in the processing art, EXAMINE, STEP and CONTINUE are merely examples of a wide variety of commands designed to cause the operating program being debugged to function in a desired manner so that the operator or user can determine if the operating program is running correctly.
In the past, debugging has been primarily accomplished by attaching a keyboard and display to a computer containing the program to be debugged, if a keyboard and display were not previously associated therewith, and implementing the debugger which, as noted above, may comprise a separate program or form part of the operating program. The debugging user debugs the operating program by entering selected commands plus any additional necessary data via the keyboard and observes the results of the commanded action on the display. While this approach is satisfactory when the program is located in a local computer, particularly if the local computer includes a keyboard and display console, it is disadvantageous when the program is in a computer that normally does not include a keyboard and display console. Past debugging procedures are particularly disadvantageous for use in computer systems that include a plurality of central processing units, particularly distributed systems, wherein various parts of a composite program are located in different units. For example, in recent years, more and more attention has been given to automating the manufacturing and assembly of products. Initially, each manufacturing, assembly, inspecting, etc., machine was controlled by a separate program. More recently, attempts have been made to integrate the operations of such machines together and with other systems, such as conveyors for moving parts from one machine to another, in order to provide entirely automated assembly lines. The initial approach to providing entirely automated assembly lines was to write a sophisticated large operating program and debug the operating program as a unit. However, this approach has a number of disadvantages. Most importantly, the production of such operating programs and their debugging require the services of skilled programmers who are usually not familiar with the environment in which the program is to be used. The end result is an expensive program that frequently does not operate as satisfactorily as desired at start up. Frequently time consuming and, thus, expensive debugging by skilled programmers is required before satisfactory operation is achieved. Further, changes in such programs usually require the services of skilled programmers.
More recently, proposals have been made to provide computer systems comprising a plurality of central processing units connected together via a communication network. Each of the central processing units is programmed to control all or part of one or more of the machines of the automated factory. Because the central processing units can communicate with one another via the communication network, several central processing units can be programmed to work together to accomplish a particular result. For example, the central processing unit controlling the operation of a part inspection machine can be programmed to cooperate with a robotic arm that removes defective parts from a conveyor. Separate central processing units may be programmed to control the part inspection machine and the robotic arm or a single central processing unit may include separate programs designed to control these items. In any event, cooperation between the "programs" is required in order to accomplish the desired results--the removal of defective parts. Similarly, cooperation between the inspection machine, the robotic arm, and the conveyor conveying the parts may be necessary in order to speed up or slow down the conveyor depending upon the number of defective parts removed. As will be readily apparent, while the "programs" that control these items must be designed to coact together, they can be separately written. Because separate programs to control such items are relatively uncomplicated, they can be written by programmers with limited skills--frequently persons familiar with the manufacturing procedure who have been taught a suitable high level programming language. In the past, one disadvantage of this approach to programming has been the difficulty associated with debugging programs that cooperate with one another, particularly when parts of the cooperating programs are located in separate central processing units that are spaced from one another.
In the past, in order to debug a series of related operating programs, particularly when they are included in widely separated central processing units, it has been necessary to connect consoles including a keyboard and a display to each of the central processing units and have two (or more) operators work together. Obviously, it would be less expensive and, thus, more desirable, to allow a single operator to debug such central processing unit systems from a central location. This invention is designed to fill this need. More specifically, this invention is designed to provide a debugger suitable for use in a data procesing (e.g., computer) system comprising a plurality of central processing units connected together by a communication network so that the central processing units can cooperate in order to achieve a particular result. The invention is directed to accomplishing this result without requiring a separate user console for each associated central processing unit. Rather, the invention provides for debugging from a single console, which may be at a location remote from the location of the central processing units whose program(s) are to be debugged.